FPGA差分转单端,单端转差分 IBUFDS OBUFDS BUFG |
您所在的位置:网站首页 › 单端 转 差分 › FPGA差分转单端,单端转差分 IBUFDS OBUFDS BUFG |
Xilinx,IBUFDS原语 IBUFDS #( .DIFF_TERM("FALSE"), // Differential Termination .IBUF_LOW_PWR("TRUE"), // Low power="TRUE", Highest performance="FALSE" .IOSTANDARD("DEFAULT") // Specify the input I/O standard ) IBUFDS_inst ( .O(data_clk_tmp), // Buffer output .I(data_clk_p), // Diff_p buffer input (connect directly to top-level port) .IB(data_clk_n) // Diff_n buffer input (connect directly to top-level port) ); 将需要转换的data_clk P端和N端接入IBUFDS的I和IB端口,就可以在O端口得到转换的单端信号。 除了CLK时钟信号,其他信号的输入转换基本结束了; 而CLK时钟信号还需要接入BUFG,因为CLK时钟只有接入BUFG才能接入全局时钟网络。 BUFG BUFG_i0 ( .O(data_clk), // 1-bit output: Clock output, 36MHz. .I(data_clk_tmp) // 1-bit input: Clock input, 36MHz. );一个输入一个输出 用一个OBUFDS原语实现单端转差分,在Language Template中找到原语,修改后如下: OBUFDS #( .IOSTANDARD("LVDS18"), // Specify the output I/O standard .SLEW("SLOW") // Specify the output slew rate ) OBUFDS_inst ( .O(tx_frame_p), // Diff_p output (connect directly to top-level port) .OB(tx_frame_n), // Diff_n output (connect directly to top-level port) .I(tx_frame) // Buffer input );设置好相应的参数之后,将单端信号接入OBUFDS的I端口,O端口输出差分信号的P端,OB端口输出差分信号的N端。
在设置输入输出端口的“IOSTANDARD”中,遇到了些许问题,这里写出来记录一下,也让后面遇到这个问题的人有个参考;最初设置差分信号的“IOSTANDARD”时,我想当然的使用了“LVDS”,“LVDS18”等参数,但是这些参数都不能最终生成比特流; 在查了一些资料以及Vivado本身的I/O Port界面里参数后发现,差分信号的IOSTANDARD需要这样设置: set_property IOSTANDARD DIFF_HSTL_II_18 [get_ports tx_frame_p]因为我的IO电压是1.8V,所以最终使用了“DIFF_HSTL_II_18”,如果有更好的方案,可以一起探讨探讨。
总结: 输入信号需要用到IBUFDS实现差分转单端,输入时钟还需要加BUFG输出信号使用OBUFDS实现单端转差分差分信号只需要绑P端管脚,“IOSTANDARD”设置需要注意输入输出端口的简单处理之后,这些信号为了提高传输数据的效率,还使用了DDR(Double Data Rate)技术传输数据,如何解决DDR问题,下一篇文章再来探讨。 转载自知乎 万物皆可卷积 武汉大学电路与系统 https://zhuanlan.zhihu.com/BugRec |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |